<?php

  /**
   * Evaluation
   *
   * ORM для таблицы с оценками публикаций
   *
   * @property int $post_id идентификатор поста
   * @property int $balls   баллы (1-10)
   */

  final class Evaluation extends UserRecord
  {
    /**
     * вернуть экземпляр модели
     *
     * @return Evaluation
     * @access public
     */
    public static function model($className = __CLASS__)
    {
      return parent::model($className);
    }

    /**
     * вернуть имя таблицы
     *
     * @return string
     * @access public
     */
    public function tableName()
    {
      return "evaluation";
    }

    /**
     * правила проверки атрибутов модели
     *
     * @return array[]
     * @access public
     */
    public function rules()
    {
      return array(
        array("post_id", "exist", "className" => "Post", "attributeName" => "id", "allowEmpty" => false),
        array("balls", "numerical", "min" => 1, "max" => 10, "allowEmpty" => false, "integerOnly" => true)
      ) + parent::rules();
    }

    /**
     * вернуть оценку, выставленную авторизованным пользователем
     *
     * @param int $pid идентификатор поста
     * @return int
     * @access public
     */
    public function userBalls($pid)
    {
      /** @var $user CWebUser */
      $user = $this->app->user;
      if (!$user->isGuest)
        /** @var $score Evaluation */
        if ($score = $this->findByPk(array("user_id" => $user->id, "post_id" => $pid)))
          return $score->balls;

      return 0;
    }
  }

?>
